home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_08_05 / 8n05060a < prev    next >
Text File  |  1990-04-17  |  1KB  |  39 lines

  1. Listing 1
  2.  
  3. /* COMPLEX.H header file
  4.  * use for complex arithmetic in C
  5.  * see MULLER.C for support functions such as
  6.      csqrt(),clog(),cexp(),argmt(),polarxy()
  7.  
  8. from  C Tools for Scientists and Engineers by L. Baker
  9.  
  10. */
  11.  
  12. struct complex { double x;
  13.          double y;} ;
  14. static double TP,T2,T3;/* dummy*/
  15. double sqrt();
  16. /* for below, X,Y are complex structures, and one is returned*/
  17.  
  18. #define CMULTR(X,Y) ((X).x*(Y).x-(X).y*(Y).y)
  19. #define CMULTI(X,Y)  ((X).y*(Y).x+(X).x *(Y).y)
  20. /*
  21. #define CMLT(Z,X,Y) {TP=(X.x+Y.x)*(X.y+Y.y);T2=X.x*Y.x;\
  22.                      T3=X.y*Y.y;Z.y=TP-T2-T3;z.X=T2-T3;}
  23. */
  24. #define CDRN(X,Y)  ((X).x*(Y).x+(Y).y*(X).y)
  25. #define CDIN(X,Y)  ((X).y*(Y).x-(X).x*(Y).y)
  26. #define CNORM(X) ((X).x*(X).x+(X).y*(X).y)
  27. #define CDIV(z,nu,de) {TP=CNORM(de);z.x=CDRN(nu,de)/TP;\
  28.                        z.y=CDIN(nu,de)/TP;}
  29. #define CONJG(z,X) {(z).x=(X).x;(z).y=-(X).y;}
  30. #define CMULT(z,X,Y) {(z).x=CMULTR((X),(Y)); (z).y=CMULTI((X),(Y));}
  31. #define CADD(z,X,Y) {(z).x=(X).x+(Y).x;(z).y=(X).y+(Y).y;}
  32. #define CSUB(z,X,Y) {(z).x=(X).x-(Y).x;(z).y=(X).y-(Y).y;}
  33. #define CLET(to,from) {(to).x=(from).x;(to).y=(from).y;}
  34. #define cabs(X) sqrt((X).y*(X).y+(X).x*(X).x)
  35. #define CMPLX(X,real,imag) {(X).x=(real);(X).y=(imag);}
  36. #define CASSN(to,from) {to.x=from->x;to.y=from->y;}
  37. #define CTREAL(z,X,real) {(z).x=(X).x*(real);(z).y=(X).y*(real);}
  38. #define CSET(to,from) {to->x=(from).x;to->y=(from).y;}
  39.